package com_djm_2025_05_16;

import java.util.Arrays;

/**
 * 奇数位于偶数之前
 *
 * @author dengjiangming
 * @version 1.0.0
 * @date 1.0.0
 */
public class AdjustArrayOrder {
   /*
   调整数组顺序使得奇数位于偶数之前。调整之后，不关心大小顺序。
          如数组：[1,2,3,4,5,6]
          调整后可能是：[1, 5, 3, 4, 2, 6]
    */

    public static void adjustArray(int[] arr) {
        //思路：利用快速排序的划分操作
        //利用双指针法，设立一个指针指向数组首元素，一个指针指向数组尾元素
        //首指针从前向后遍历，如果遇到偶数则停下来
        //尾指针从后向前遍历，如果遇到奇数则停下来
        //交换首指针和尾指针指向的元素
        //在首指针小于尾指针时，重复上述操作，知道首指针大于尾指针。算法结束

        int left = 0;
        int right = arr.length - 1;
        int tmp = 0;

        while (left < right) {

            while (left < right && arr[left] % 2 != 0) {
                left++;
            }

            while (left < right && arr[right] % 2 == 0) {
                right--;
            }

            tmp = arr[left];
            arr[left] = arr[right];
            arr[right] = tmp;
            left++;
            right--;
        }
    }

    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5, 6, 7};
        System.out.println("调整前：" + Arrays.toString(arr));
        adjustArray(arr);
        System.out.println("调整后：" + Arrays.toString(arr));
    }

}
